home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / mxlibs / sblib / manuel.sb < prev    next >
Encoding:
Text File  |  1994-07-16  |  14.0 KB  |  473 lines

  1. * Librairie de fonctions pour le controle de la carte Sound Blaster.
  2. * Compatible avec Borland C++ 3.1 et plus.
  3. * Autre compilateur ?peut-etre?
  4. * Librairie compile en LARGE.
  5. * L'enregistrement n'est pas possible dans cette version.
  6.  
  7. Par Jean-Francois Belleau.
  8. (C)1994.
  9.  
  10. J'ai mis enormement de temps dans cette librairie. Je travail sur une librairie
  11. polymorphique. Pour l'instant, je relache une version BETA du controle de la
  12. carte sound blaster seulement. J'ai aussi termine la Sound Blaster PRO avec le
  13. control du mixer. Elle sera relachee bientot. Je travaille donc sur la SB16.
  14. Ce n'est pas facile car il n'y a pas beaucoup d'informations disponibles.
  15. Le kit complet sera une librairie polymorphique assez puissante. Pour ceux qui
  16. ne connaisse pas le polymorphisme vous allez trouver ca capote et tres pratique
  17. lorsque la version finale sortira. Pour l'instant utiliser au maximum les
  18. possibilites de cette librairie.
  19.  
  20. Bien sur il y a des messages qui apparaitront pour rendre a Cesar ce qui est
  21. a Cesar. Si la librairie fonctionne bien et que vous desirez l'utiliser dans
  22. vos programmes sans les messages contactez-moi. Je vous donnerai une license.
  23. Mais n'ayez crainte 20$ au plus.
  24.  
  25.  
  26. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!Important!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  27.  
  28. Vous utilisez les fichiers a vos propres risques. Je ne peux etre tenu responsable
  29. en aucun temps si des bris de n'importe quelle sorte survenais.
  30.  
  31. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!Important!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  32.  
  33. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  34.  
  35. La librairie est presentement en test BETA. Il est donc normal que des bugs
  36. surviennent. Si jamais tel etait le cas, contactez-moi via:
  37.  
  38.  
  39. INTERNET:
  40.      message a    : djjf@biko.llc.org
  41.  
  42. Le Quebecois:
  43.          message a: Jean-Francois Belleau.
  44.  
  45. ou au (418)837-7199.(Par voix).
  46.  
  47. Adresse:
  48.  
  49. Jean-Francois Belleau
  50. 231 des Commandeurs,
  51. Levis, PQ
  52. G6V 8A7
  53. Canada.
  54.  
  55. Essayez d'etre le plus clair possible. Specifiez-moi aussi votre equipement.
  56. Si possible incluez votre code.
  57.  
  58. N'hesitez pas a me donner vos commentaires aussi. Ils seront tres apprecies.
  59.  
  60. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  61.  
  62.  
  63.  
  64.  
  65.  
  66. Fonctions disponibles:
  67.               SB_DSP,
  68.               ~SB_DSP,
  69.               GetCradInfo,
  70.               GetCurrentStatus,
  71.               InitCard,
  72.               Set8BitsDma,
  73.               SetIOPort,
  74.               SetIrq,
  75.               SetOuputBuffer,
  76.               SetOuputRawHandle,
  77.               SetOuputVocHandle,
  78.               SetOuputWaveHandle,
  79.               SetSamplingRate,
  80.               SetUserFlag,
  81.               Start,
  82.               Stop.
  83.  
  84.  
  85.  
  86. Modules:
  87.  
  88.    -cardtype.h             Fichier header qui contient certaines informations
  89.                relative au carte.
  90.  
  91.    -dma8cnt.h              Fichier header pour les fonctions DMA 8 bits.
  92.    -dma8cnt.obj            Code objet pour le controle dma 8 bits.
  93.  
  94.    -dsp8.h                 Fichier header pour les fonctions de bas niveau
  95.                pour le control du dsp.
  96.    -dsp8.obj               Code objet pour le controle de bas niveau du dsp.
  97.  
  98.    -error.h                Fichier header pour la definition des erreurs.
  99.  
  100.    -sbirq.h                Fichier header pour les fonctions d'interruption.
  101.    -sbirq.obj              Code objet pour le controle des interruptions.
  102.  
  103.    -sbdsp.h                Fichier header pour la classe d'interface avec
  104.                la carte Sound Blaster.
  105.    -sbdsp.obj              Code objet pour la classe d'interface avec la carte
  106.                Sound Blaster.
  107.  
  108.    -status.h               Fichier header pour les definitions du statut de
  109.                la carte.
  110.  
  111.    -structur.h             Fichier header qui contient la structure d'infor-
  112.                mation sur la carte.
  113.  
  114.    -type.h                 Fichier header qui contient diffent type de donnee.
  115.  
  116.  
  117. ATTENTION:
  118.       Incluer toujours le fichier sbdsp.h et vous n'aurez aucun probleme.
  119.  
  120.       Toute les fonctions sont des fonctions de sbdsp.obj.
  121.  
  122.  
  123.  
  124. SB_DSP:
  125. =======
  126.   Description:
  127.      Cette fonction est le constructeur de la classe pour la
  128.      sound blaster de base.
  129.  
  130.   Entre: Aucun parametre.
  131.  
  132.   Retour: Aucun retour.
  133.  
  134.   Exemple:
  135.       SB_DSP *sbDspPTR;
  136.  
  137.       sbDspPTR = new SB_DSP;
  138.       ...
  139.       ...
  140.       ...
  141.       delete sbDspPTR;
  142.  
  143. ------------------------------------------------------------------------------
  144. GetCardInfo:
  145. ============
  146.   Description:
  147.      Cette fonction retourne une strucutre d'information
  148.      specifique sur la carte utilisee presentement.
  149.  
  150.      - La structure est definie dans structur.h
  151.  
  152.      - Ne jamais faire de delete sur le pointeur
  153.        de la structure.
  154.  
  155.   Entre: Aucun parametre.
  156.  
  157.   Retour: *stc_CARD_INFO
  158.       Un pointeur sur la structure qui contient
  159.       les informations relatives a la carte.
  160.  
  161.   Exemple:
  162.       SB_DSP *sbDspPTR;
  163.       stc_CARD_INFO *cardSTC;
  164.  
  165.       sbDspPTR = new SB_DSP;
  166.  
  167.       if( sbDspPTR->InitCard() == err_INIT_DONE )
  168.       {
  169.          cardSTC  = sbDspPTR->GetCardInfo();
  170.          printf("Nom de la carte:%s",cardSTC->cardName);
  171.       }
  172.       delete sbDspPTR;
  173.  
  174. ------------------------------------------------------------------------------
  175. GetCurrentStatus:
  176. =================
  177.    Description:
  178.       Cette fonction retourne le statut courant de la carte.
  179.  
  180.    Entre: Aucun parametre.
  181.  
  182.    Retour:
  183.       sta_IDLE             : Si la carte ne fait rien.
  184.       sta_OUTPUT_BUFFER    : Si la carte joue un buffer.
  185.       sta_OUTPUT_RAW_FILE  : Si la carte joue un fichier raw.
  186.       sta_OUTPUT_WAVE_FILE : Si la carte joue un fichier wav.
  187.       sta_OUTPUT_VOC_FILE  : Si la carte joue un fichier voc.
  188.  
  189.   Exemple:
  190.       SB_DSP *sbDspPTR;
  191.       sbDspPTR = new SB_DSP;
  192.  
  193.       if( sbDspPTR->InitCard() == err_INIT_DONE )
  194.       {
  195.          if( sbDspPTR->GetCurrentStatus() == sta_IDLE )
  196.         printf("La carte ne joue pas presentement.");
  197.       }
  198.       delete sbDspPTR;
  199.  
  200. ------------------------------------------------------------------------------
  201. InitCard:
  202. =========
  203.    Description:
  204.       Cette fonction initialise la carte.
  205.  
  206.       Important:
  207.       ----------
  208.       Les  fonctions SetIOPort, SetIrq, Set8BitsDma doivent etre
  209.       appelees avant cette fonctions sinon les parametres par defaut
  210.       seront utilisees.
  211.  
  212.    Entre: Aucun parametre.
  213.  
  214.    Retour:
  215.       err_NO_CARD_FOUND: Si pas de carte trouve.
  216.       err_INIT_DONE    : Si la carte est initialise.
  217.   Exemple:
  218.       SB_DSP *sbDspPTR;
  219.       sbDspPTR = new SB_DSP;
  220.  
  221.       sbDspPTR->SetIOPort(0x220);
  222.       sbDspPTR->SetIrq(5);
  223.       sbDspPTR->Set8BitsDma(1);
  224.       if( sbDspPTR->InitCard() == err_INIT_DONE )
  225.          printf("Carte presente");
  226.       else
  227.          printf("Carte non-trouvee");
  228.  
  229.       delete sbDspPTR;
  230.  
  231. ------------------------------------------------------------------------------
  232. Set8BitsDma:
  233. ============
  234.    Description:
  235.       Cette fonction permet de specifier le canal DMA a utilise pour le
  236.       transfert de donnees sur 8 bits.
  237.  
  238.    Entre:
  239.      unsigned: Le canal DMA a utilise.
  240.  
  241.    Retour:
  242.      err_INVALID_DMA   : Si le canal dma specifier n'est pas valide.
  243.      err_VALID_DMA     : Si le canal dma specifier est valide.
  244.   Exemple:
  245.       SB_DSP *sbDspPTR;
  246.       sbDspPTR = new SB_DSP;
  247.  
  248.       if( sbDspPTR->Set8BitsDma(1) == err_VALID_DMA )
  249.          printf("Canal DMA 8 bits valide.");
  250.       else
  251.          printf("Canal DMA 8 bits invalide.");
  252.  
  253.       delete sbDspPTR;
  254.  
  255. ------------------------------------------------------------------------------
  256. SetIOPort:
  257. ==========
  258.    Description:
  259.       Cette fonction permet de specifier le port IO pour les operations
  260.       avec la carte de son.
  261.  
  262.      Les ports valides sont variables selon le type de carte.
  263.      Voir l'array validIOPort dans sbdsp.h.
  264.    Entre:
  265.      unsigned : Le port IO a utilise.
  266.  
  267.    Retour:
  268.      err_INVALID_PORT  : Si le port IO specifier n'est pas valide.
  269.      err_VALID_PORT    : Si le port IO specifier est valide.
  270.  
  271.    Exemple:
  272.       SB_DSP *sbDspPTR;
  273.       sbDspPTR = new SB_DSP;
  274.  
  275.       if( sbDspPTR->SetIOPort(0x220) == err_VALID_PORT )
  276.          printf("Port IO valide.");
  277.       else
  278.          printf("Port IO invalide.");
  279.  
  280.       delete sbDspPTR;
  281.  
  282. ------------------------------------------------------------------------------
  283. SetIrq:
  284. =======
  285.    Description:
  286.       Cette fonction permet de specifier la ligne IRQ qui sera utilisee
  287.       pour communiquer avec la carte de son.
  288.       Les IRQ valides sont variables selon le type de carte.
  289.       Voir validIrq dans sbdsp.h.
  290.    Entre:
  291.      unsigned : La ligne IRQ a utilise.
  292.  
  293.    RETURN:
  294.      err_INVALID_IRQ   : Si l'IRQ specifier n'est pas valide.
  295.      err_VALID_IRQ     : Si l'IRQ specifier est valide.
  296.  
  297.    Exemple:
  298.       SB_DSP *sbDspPTR;
  299.       sbDspPTR = new SB_DSP;
  300.  
  301.       if( sbDspPTR->SetIrq(0x220) == err_VALID_IRQ )
  302.          printf("IRQ valide.");
  303.       else
  304.          printf("IRQ invalide.");
  305.  
  306.       delete sbDspPTR;
  307.  
  308. ------------------------------------------------------------------------------
  309. SetOutputBuffer:
  310. ================
  311.    Description:
  312.       Cette fonction permet de specifier le buffer qui sera utilise pour
  313.       transferer les echantillons du PC vers la CARTE.
  314.  
  315.       Utilise cette fonction pour jouer un buffer memoire. Le buffer doit
  316.       etre plus petit que 64k et n'a pas besoin d'etre "aligne."
  317.       Pour jouer un buffer > 64k utilise la fonction pour jouer un fichier
  318.       de type raw.
  319.       NB: Voir SetOutputVocHandle,SetOutputWaveHandle et SetOutputRawHandle
  320.       pour faire jouer des fichiers.
  321.  
  322.    Entre:
  323.      char *   : Le buffer d'echantillons.
  324.      unsigned : La longueur du buffer.
  325.  
  326.    Retour:
  327.      err_INVALID_BUFFER: Si le buffer specifier est a NULL.
  328.      err_VALID_BUFFER  : Si le buffer specifier est valide.
  329.  
  330.    Exemple:
  331.        Voir le fichier ex1.cpp
  332.  
  333. ------------------------------------------------------------------------------
  334. SetOutputRawHandle:
  335. ===================
  336.    Description:
  337.       Cette fonction permet de specifier le handle de fichier qui sera
  338.    utilise pour transferer les donnees du PC vers la CARTE. Le fichier
  339.    doit etre de type RAW, c'est a dire juste les donnees echantillonnees.
  340.    Le fichier doit etre ouvert avec la fonction "open".
  341.  
  342.    Entre:
  343.      int  : Le handle de fichier a utiliser.
  344.  
  345.    Retour:
  346.      err_INVALID_HANDLE: Si le handle specifier est a -1.
  347.      err_VALID_HANDLE  : Si le handle specifier est valide.
  348.  
  349.    Exemple:
  350.        Voir le fichier ex2.cpp
  351.  
  352.  
  353. ------------------------------------------------------------------------------
  354. SetOutputVocHandle:
  355. ===================
  356.    Description:
  357.       Cette fonction permet de specifier le handle de fichier qui sera
  358.    utilise pour transferer les donnees du PC vers la CARTE. Le fichier
  359.    doit etre de type .VOC. Ce sont les fichiers utilises par Creative LABS.
  360.    Seul la version 1.1 est supportee. Il reste encore quelque bugs.
  361.    Le fichier doit etre ouvert avec la fonction "open".
  362.  
  363.    Entre:
  364.      int : Le handle de fichier a utiliser.
  365.  
  366.    Retour:
  367.      err_INVALID_HANDLE: Si le handle specifier est a -1.
  368.      err_VALID_HANDLE  : Si le handle specifier est valide.
  369.      err_NOT_SUPPORTED_FILE: Si le fichier est non supporte.
  370.  
  371.    Exemple:
  372.        Voir le fichier ex3.cpp
  373.  
  374. ------------------------------------------------------------------------------
  375. SetOutputWaveHandle:
  376. ====================
  377.    Description:
  378.       Cette fonction permet de specifier le handle de fichier qui sera
  379.    utilise pour transferer les donnees du PC vers la CARTE. Le fichier
  380.    doit etre de type .WAV. Ce sont les fichiers utilises par windows.
  381.    Le fichier doit etre ouvert avec la fonction "open".
  382.  
  383.    Entre:
  384.      int : Le handle de fichier a utiliser.
  385.  
  386.    Retour:
  387.      err_INVALID_HANDLE: Si le handle specifier est a -1.
  388.      err_VALID_HANDLE  : Si le handle specifier est valide.
  389.      err_NOT_SUPPORTED_FILE: Si le fichier est non supporte.
  390.  
  391.    Exemple:
  392.        Voir le fichier ex4.cpp
  393.  
  394. ------------------------------------------------------------------------------
  395. SetSamplingRate:
  396. ================
  397.    Description:
  398.      Cette fonction permet de specifier la vitesse a laquelle les echantilons
  399.      seront joues ou enregistre.
  400.      Cette fonction doit etre utilise avant la fonction SetOutputBuffer.
  401.      Les fonctions qui jouent les fichiers a partir du disque dur s'occupe
  402.      de selectionner le bon sampling rate.
  403.  
  404.      Les ranges valides sont variables selon le type de carte.
  405.  
  406.    Entre:
  407.      unsigned : La vitesse d'echantilonage.
  408.  
  409.    Retour:
  410.        err_INVALID_RATE: Si le sampling rate specifier est trop grand
  411.                  il sera ajuster au plus haut.
  412.                  Si le sampling rate specifier est trop petit
  413.                  il sera ajuster au plus petit.
  414.        err_VALID_RATE : Si le sampling rate specifier est dans la
  415.                 marge de ceux de la carte.
  416.  
  417.    Exemple:
  418.        Voir le fichier ex1.cpp
  419.  
  420. ------------------------------------------------------------------------------
  421. SetUserFlag:
  422. ============
  423.    Description:
  424.       Cette fonction permet de specifier un flag qui indique la fin de
  425.    la sorite d'un buffer ou d'un fichier. La valeur sera a 1 lorsque la
  426.    sortie sera terminer.
  427.  
  428.  
  429.    Entre:
  430.      unsigned *: Le pointeur au flag.
  431.  
  432.    Retour:
  433.       Aucun retour;
  434.  
  435.    Exemple: Voir les fichiers ex1.cpp,ex2.cpp,ex3.cpp.
  436.  
  437. ------------------------------------------------------------------------------
  438. Start:
  439. ======
  440.    Description:
  441.       Cette fonction demare le transfer entre le PC et la CARTE. Si un
  442.    un output buffer ou output handle a ete specifier, la fonction le fera
  443.    jouer en sortie, sinon si un input buffer a ete specifier, la fonction
  444.    enregistrera.
  445.  
  446.    Entre:
  447.      Aucun parametre.
  448.  
  449.    Retour:
  450.       err_NO_BUFFER_SPECIFIED: Si pas de buffer ou de handle specifier.
  451.                    Aucune action n'est entreprise.
  452.       err_OUTPUT_STARTED: Si joue un buffer.
  453.       err_INPUT_STARTED:  Si enregistre dans un buffer.
  454.  
  455.    Exemple: Voir les fichiers ex1.cpp,ex2.cpp,ex3.cpp.
  456.  
  457. ------------------------------------------------------------------------------
  458. Stop:
  459. =====
  460.    Description:
  461.      Cette fonction arrete le transfer entre le PC et la CARTE.
  462.  
  463.    Entre:
  464.      Aucun parametre.
  465.  
  466.    Retour:
  467.       err_NOT_STARTED   : Si la carte n'est pas en utilisation.
  468.       err_OUTPUT_STOPPED: Si joue un buffer et arreter correctement.
  469.       err_INPUT_STOPPED : Si enregistre dans un buffer et arreter.
  470.  
  471.    Exemple: Voir les fichiers ex1.cpp,ex2.cpp,ex3.cpp.
  472.  
  473. ------------------------------------------------------------------------------